// 使用axios
import axios from 'axios'
import {
    Message
} from 'element-ui';
import { getLocal,removeLocal } from '@/utils/local';
import router from '@/router/index.js';
// 创建axios副本（修改axios的默认值）
const _fetch = axios.create({
    baseURL: process.env.VUE_APP_URL,
    // withCredentials: true  如果没有配置 vue.config.js 的代理的话，这里跨域带cookie一定要打开
})


// 添加请求拦截器
_fetch.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    window.console.log('请求拦截', config);

    config.headers.token = getLocal('token') // 在请求拦截统一加上请求头，就不用每个带有请求头的请求都添加了

    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
_fetch.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    window.console.log('响应拦截', response)
    if (response.data.code == 200) {
        return response;
    } else if (response.data.code == 206) {  // 出现token参数错误，一般是token过期导致
        // 提示一下
        Message.error(response.data.message)
        //  清除token
        removeLocal('token')
        // 跳转至登录页
        router.push('/login')  // 导入路由实例对象，不用加this.$
        // 不是200情况，我们都不希望.then再执行，直接让它跳转带.catch
        return Promise.reject(response.data.message)
    } else {
        Message.error(response.data.message)
        return Promise.reject(response.data.message); // 报错信息，直接由.catch报出
    }
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});

// 暴露需要调用的  _fetch
export default _fetch